package com.station.Activitys.activity;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;

import com.google.gson.Gson;
import com.seek.biscuit.Biscuit;
import com.seek.biscuit.CompressResult;
import com.seek.biscuit.OnCompressCompletedListener;
import com.station.Activitys.R;
import com.station.Activitys.activity.base.BaseActivity;
import com.station.Activitys.adapter.DemoMagAdapter;
import com.station.Activitys.bean.DemoMag;
import com.station.Activitys.bean.ImageJson;
import com.station.Activitys.utils.Constant;
import com.station.Activitys.utils.LogUtils;
import com.station.Activitys.utils.StringUtils;
import com.zhihu.matisse.Matisse;

import java.util.ArrayList;
import java.util.List;

import butterknife.Bind;

/**
 * 项目名称：基站管理平台 手机app
 * 类描述：
 * 创建人：张飞祥
 * 创建时间：2018/11/26 14:17
 * 修改人：张飞祥
 * 修改时间：2018/11/26 14:17
 * 修改备注：
 */
public class DemoActivity extends BaseActivity {

    @Bind(R.id.rv_list)
    RecyclerView rvList;
    @Bind(R.id.btn_submit)
    Button btnSubmit;
    @Bind(R.id.layout_add_list)
    RelativeLayout layoutAddList;

    //上传图片适配器
    private DemoMagAdapter mUploadAdapter = null;
    //数据源
    private List<DemoMag> mImageList = new ArrayList<>();
    //当前 那个操作上传图片 的 pos
    private int mPos;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_demo);

        layoutAddList.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DemoMag demoMag = new DemoMag();
                demoMag.setName("");
                demoMag.setmHttpImgList(new ArrayList<String>());
                demoMag.setmLocalImgList(new ArrayList<String>());
                //上传图片Flag 初始化 （true：当前位置可以继续上传，false：当前位置不可以上传了）
                List<Boolean> mHttpImgFlag = new ArrayList<>();
                for(int i = 0;i < Constant.MAX_SELECT_PIC_NUM;i++){
                    mHttpImgFlag.add(i,true);
                }
                demoMag.setmHttpImgFlag(mHttpImgFlag);

                //添加一个 item
                mUploadAdapter.addItem(mImageList.size(),demoMag);
            }
        });

        btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //图片上传 json
                List<ImageJson> list = mUploadAdapter.getUploadImgList();
                //将 list 转换成 json 字符串
                String imgJson = new Gson().toJson(list).toString();
                LogUtils.e("imgJson:----->"+imgJson);
            }
        });
    }


    @Override
    protected void initData() {

        //TODO new 新添加 图片
        mUploadAdapter = new DemoMagAdapter(DemoActivity.this, mImageList) {
            @Override
            public void setImageUploadPos(int position) {
               mPos =  position;
            }
        };
        //添加 适配器 样式
        rvList.setLayoutManager(new LinearLayoutManager(DemoActivity.this, LinearLayoutManager.VERTICAL, false));
        //添加 适配器
        rvList.setAdapter(mUploadAdapter);
    }

    /**
     * 图片处理返回页面
     *
     * @param requestCode
     * @param resultCode
     * @param data
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        //TODO 选择之后的 图片 url 返回
        if (requestCode == Constant.REQUEST_CAMERA_PHOTO) {
            /**
             * 1.是否已经点击确认了
             * 2.获取返回 的 url 集合
             * 3.开始进行 图片压缩
             * 4.根据压缩后的 图片路径 进行填充到 图片集合
             * 5.刷新 adapter 数据
             */
            if (resultCode == Activity.RESULT_OK) {
                //TODO 获取当前图片路径 转成 URi的形式
                List<String> mSelected = Matisse.obtainPathResult(data);
                //TODO 开始图片压缩
                Biscuit.with(this)
                        .path(mSelected)
                        .listener(new OnCompressCompletedListener() { //压缩监听
                            @Override
                            public void onCompressCompleted(CompressResult compressResult) {
                                //TODO 本地图片
                                //获取图片 返回 的压缩 后的路径
                                List<String> urls = compressResult.mSuccessPaths;
                                //获取现在 真正的 数据集合
                                mImageList = mUploadAdapter.getImageMags();
                                //添加到图片集合里面去
                                mImageList.get(mPos).getmLocalImgList().addAll(urls);
                                //图片选择回调 列表刷新
                                mUploadAdapter.notifyDataSetChanged();

                                //TODO 网络图片
                                //获取集合
                                List<String> httpImg = mImageList.get(mPos).getAdapter().getHttpUrls();
                                //填充到数据结合中
                                List<String> imgs = mImageList.get(mPos).getmHttpImgList();
                                imgs.addAll(httpImg);
                                imgs = StringUtils.removeDuplicate(imgs);

                                mImageList.get(mPos).getmHttpImgList().clear();
                                mImageList.get(mPos).getmHttpImgList().addAll(imgs);
                                //图片选择回调 列表刷新
                                mUploadAdapter.notifyDataSetChanged();
                            }
                        })
                        .ignoreLessThan(100)//忽略小于100kb的图片不压缩，返回原图路径
                        .build()            //开始执行
                        .asyncCompress();   //异步压缩
            }
        }
    }
}
